package com.lft07.status;

/**
 * Function: 		A {@code TestStop} 测试线程停止<br/>
 * Reason:   		ADD REASON.<br/>
 * 1. 建议线程正常停止---> 利用次数，不建议死循环。
 * 2. 建议使用标志位---> 设置一个标志位。
 * 3. 不要使用 stop 或者 destory 等过时或者 JDK 不建议使用的方法。
 * Date:            2021-01-27 14:09<br/>
 * <p>
 * Class Name:      TestStop<br/>
 * Package Name:    com.lft07.status<br/>
 * @author Laifengting / E-mail:laifengting@foxmail.com
 * @version 1.0.0
 * @since JDK 8
 */
public class TestStop implements Runnable {
	/**
	 * 重写 run() 方法
	 */
	@Override
	public void run() {
		int i = 0;
		while (flag) {
			System.out.println("Run ... Thread " + i++);
		}
	}
	
	/**
	 * 1. 设置一个标识位
	 */
	private boolean flag = true;
	
	/**
	 * 设置一个公开的方法停止线程，更改标识位
	 */
	public void stopThread() {
		this.flag = false;
	}
	
	public static void main(String[] args) {
		TestStop testStop = new TestStop();
		new Thread(testStop).start();
		for (int i = 0; i < 1000; i++) {
			System.out.println("Main..." + i);
			if (i == 900) {
				// 调用 自定方法 切换标志位，让线程停止
				testStop.stopThread();
				System.out.println("该线程停止了。");
			}
		}
		
	}
	
}
